<!DOCTYPE html>
<html lang="zh-cn">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>javascript 阶段</title>
</head>

<body>


    <script>
        // bind
        // a对象
        // _this 和 that 他们不是指针变量
        var _this; //自定义变量
        var a = {
            msg: "aaa",
            say: function () {
                console.log(this.msg, "1.0");
                // 记录函数作用域的this
                _this = this;
            }
        }

        // b 对象
        var b = {
            msg: "bbb"
        }
        // 改变this指向之前
        // console.log(b.msg);// undefined
        // b.say();// 报错
        // a.say();
        // console.log(_this === b);// false

        // 改变this指向之后
        // var say = a.say.bind(b) ;  say();
        // 直接()() ; 用b对象替换了a对象
        a.say.bind(b)();
        console.log(_this === b);// true

        // bind()
        // 调用者: 方法/函数
        // 参数: 目标对象
        // 返回值: 方法
        // 功能: 改变原对象方法作用域中this指向

    </script>
</body>

</html>